//
//  BaseViewModel.h
//  ManBetX
//
//  Created by Cocoa on 2020/4/10.
//  Copyright © 2020 Fullen. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 基础 ViewModel 类
 */

@interface BaseViewModel : NSObject

// viewModel 是否为空
@property (assign, readonly, getter=isEmpty, nonatomic) BOOL empty;
// viewModel 当前的 entity
@property (strong, readonly, nonatomic) id entity;


/**
 * NS_REQUIRES_SUPER方法：子类若要 override ,需调用 super
 *
 */
+ (instancetype)viewModelWithEntity:(id)entity NS_REQUIRES_SUPER;

- (instancetype)initWithEntity:(id)entity NS_REQUIRES_SUPER;

+ (instancetype)initEmpty;

- (void)create;

/**
 * viewModel 计算容器高度（ps：如使用于 tableView 时，计算 cell 高度）
 * 子类重写
 */
- (CGFloat)cellHeight;

/**
 * viewModel 计算容器 size（ps：如使用于 UICollectionViewFlowLayout 时，计算 size）
 * 子类重写
 */

- (CGSize)cellSize;

@end



NS_ASSUME_NONNULL_END
